package com.dd.edu.rabbitmqboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RabbitmqBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(RabbitmqBootApplication.class, args);
    }

}


/**

 RabbitMQ 工作流程

 生产者消息发送过程：
 1、生产者连接RabbitMQ，建立TCP连接Connection， 开启信道Channel
 2、生产者声明一个Exchenge交换机，并设置相关属性，比如交换器类型、是否持久化等
 3、生产者声明一个队列并设置相关属性，比如是否排他、是否持久化、是否自动删除等
 4、生产者通过bindingkey 绑定key 将交换器和队列binding绑定起来
 5、生产者发送消息到RabbitMQ Broker， 其中包含routingkey 路由键、交换器等信息
 6、相应的交换器根据接收到的routingkey查找相匹配的队列
 7、如果找到，则将从生产者发送过来的消息存入相应的队列中
 8、如果没有找到，则根据生产者配置的属性，选择丢弃还是退回给生产者
 9、关闭信道
 10、关闭连接


 消费者消息接收过程

 1、消费者连接到RabbitMQ Broker，建立一个连接Connection，开启一个信道Channel
 2、消费者向RabbitMQ Broker请求消费对应队列中的消息，可能会设置相应的回调函数，以及做一些准备工作
 3、等待RabbitMQ Broker回应，并投递相应队列中的消息，消费者接收消息。
 4、消费者确认ack 收到 消息
 5、RabbitMQ从队列中删除相应已经被确认的消息
 6、关闭信道
 7、关闭连接
 */